package com.wx.mall.sys.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wx.mall.common.utils.DataResult;
import com.wx.mall.common.api.BatchProcessingVo;
import com.wx.mall.sys.entity.CarriageTemplate;
import com.wx.mall.sys.service.ICarriageTemplateService;
import com.wx.mall.sys.vo.req.CarriageTemplatePageReqVO;
import com.wx.mall.sys.vo.req.CarriageTemplateReqVO;
import com.wx.mall.sys.vo.resp.CarriageTemplateRespVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * <p>
 *  运费模板前端控制器
 * </p>
 *
 * @author ljl
 * @since 2020-03-20
 */
@RestController
@RequestMapping("/carriage-template")
@Api(tags = "运费模板相关接口")
public class CarriageTemplateController {
    @Autowired
    private ICarriageTemplateService service;

    @GetMapping("/templates")
    @ApiOperation("分页获取所有运费模板数据")
    public DataResult pageList(@ApiParam("运费模板分页vo") @Valid CarriageTemplatePageReqVO vo) {
        Page<CarriageTemplate> carriageTemplatePage = service.pageList(vo);
        return DataResult.success(carriageTemplatePage);
    }

    @GetMapping("/templates/available")
    @ApiOperation("分页获取未删除的运费模板数据")
    public DataResult pageInfo(@ApiParam("运费模板分页vo") @Valid CarriageTemplatePageReqVO vo) {
        Page<CarriageTemplate> carriageTemplatePage = service.pageInfo(vo);
        return DataResult.success(carriageTemplatePage);
    }

    @GetMapping("/templates/available/all")
    @ApiOperation("获取未删除的运费模板数据")
    public DataResult availableInfos() {
        List<CarriageTemplateRespVO> infos = service.availableInfos();
        return DataResult.success(infos);
    }

    @GetMapping("/template/{id}")
    @ApiOperation("根据id查询运费模板数据")
    public DataResult findById(@ApiParam("运费模板id") @PathVariable("id") @NotNull(message = "id不能为空") Integer id) {
        CarriageTemplateRespVO vo = service.findById(id);
        return DataResult.success(vo);
    }

    @DeleteMapping("/template/{id}")
    @ApiOperation("根据id删除运费模板数据")
    public DataResult softDeleteById(@ApiParam("运费模板id") @PathVariable("id") @NotNull(message = "id不能为空") Integer id) {
        service.softDeleteById(id);
        return DataResult.success();
    }

    @PostMapping("/templates")
    @ApiOperation("根据ids批量操作运费模板数据 0 修改（还原） 1 删除 2 启用 3 停用")
    public DataResult deleteByIds(@ApiParam("批量处理请求vo") @Valid BatchProcessingVo vo) {
        service.batchOperation(vo);
        return DataResult.success();
    }

    @PutMapping("/template")
    @ApiOperation("根据id更新运费模板数据")
    public DataResult updateById(@Valid CarriageTemplateReqVO vo) {
        service.updateById(vo);
        return DataResult.success();
    }

    @PostMapping("/template")
    @ApiOperation("新增运费模板数据")
    public DataResult add(@Valid CarriageTemplateReqVO reqVO) {
        service.add(reqVO);
        return DataResult.success();
    }

    @PutMapping("/template/updateEnabled")
    @ApiOperation("根据id更新运费模板数据启用状态")
    public DataResult updateEnabledById(@ApiParam("运费模板id")@NotNull(message = "id不能为空") Integer id,
                                        @ApiParam("运费模板enabled")@NotNull(message = "可用状态enabled不能为空") Integer enabled) {
        service.updateEnabledById(id,enabled);
        return DataResult.success();
    }

}

